"""
解释 /patient-data 路由如何调用 save_patient_data 函数
"""

import requests
import json

def explain_route():
    print("=== /patient-data 路由工作原理 ===\n")
    
    print("1. 路由定义:")
    print("   在 patient_data_routes.py 文件中:")
    print("   @router.post('/', status_code=status.HTTP_201_CREATED)")
    print("   async def save_patient_data(request: PatientDataRequest):")
    print("   这定义了一个处理 POST 请求到 /patient-data/ 路径的路由\n")
    
    print("2. 路由注册:")
    print("   在 app/api/routes.py 文件中:")
    print("   router.include_router(patient_data_router)")
    print("   这将患者数据路由包含到主路由器中\n")
    
    print("3. 应用启动:")
    print("   在 app/main.py 中创建 FastAPI 应用并注册路由")
    print("   在 server/main.py 中使用 uvicorn 启动应用")
    print("   默认运行在 http://0.0.0.0:8000\n")
    
    print("4. 请求示例:")
    url = "http://localhost:8000/patient-data/"
    print(f"   URL: {url}")
    print("   方法: POST")
    print("   请求头: Content-Type: application/json")
    
    # 示例数据
    patient_data = {
        "data": {
            "ID": "route_explanation_001",
            "NAME": "测试患者",
            "age": 25,
            "sex": "男",
            "check_time": "2024-01-15 10:30:00",
            "phone": "13800138000"
        }
    }
    
    print("\n   请求体:")
    print(json.dumps(patient_data, ensure_ascii=False, indent=4))
    
    print("\n5. 调用流程:")
    print("   a. 客户端发送 POST 请求到 http://localhost:8000/patient-data/")
    print("   b. FastAPI 路由系统匹配到 @router.post('/') 装饰器")
    print("   c. 调用 save_patient_data 函数处理请求")
    print("   d. 函数接收 PatientDataRequest 对象作为参数")
    print("   e. 处理数据并保存到数据库")
    print("   f. 返回响应结果\n")
    
    print("6. 测试请求:")
    try:
        response = requests.post(
            url,
            headers={"Content-Type": "application/json"},
            data=json.dumps(patient_data)
        )
        print(f"   状态码: {response.status_code}")
        print(f"   响应: {response.json()}")
    except Exception as e:
        print(f"   请求出错: {e}")

if __name__ == "__main__":
    explain_route()